package android.slc.module.component.resolve;

public interface IByteBuf<T extends IByteBuf<T>> {

    /**
     * 可读取字节数
     *
     * @return
     */
    public int readableBytes();

    /////////////////////写入////////////////////////

    /**
     * 写入字节
     *
     * @param value
     * @return
     */
    public ResolveByteBuf writeByte(byte value);

    /**
     * 写入字节
     *
     * @param byteArray
     * @return
     */
    public T writeBytes(byte[] byteArray);

    /**
     * 写入字节
     *
     * @param src
     * @return
     */
    public T writeBytes(T src);

    /////////////////////读取////////////////////////

    public int getReaderIndex();

    public T markReaderIndex();

    public T resetReaderIndex();


    public T readerIndex(int readerIndex);

    /**
     * 读取这个字节的位置
     *
     * @param value
     * @return
     */
    public int bytesBefore(byte value);

    /**
     * 读取
     *
     * @return
     */
    public byte readByte();

    public T discardReadBytes();

}
